#include <vector>
#include <iostream>
#include <stdlib.h>
#include <ctime>

//定义一个函数指针类型
typedef void(*task_t)();
//定义所有的任务类型
void PrintLog()
{
    std::cout << "打印日志" << std::endl;
}
void DownLoad()
{
    std::cout << "下载任务" << std::endl;
}
void UpLoad()
{
    std::cout << "上传任务" << std::endl;
}

class TaskManager
{
public:
    TaskManager()
    {
        //种种子
        srand(time(nullptr)); 
    }
    //提供注册任务的方法
    void Register(task_t t)
    {
        _tasks.push_back(t);
    }
    //提供选择任务的方法
    int Code()
    {
        return rand() % _tasks.size();
    }
    //提供按照任务码执行任务的方法
    void Execute(int code)
    {
        task_t func = _tasks[code];
        func();
    }
    ~TaskManager()
    {}
private:
    std::vector<task_t> _tasks;
};